import {qryAllusers} from '../../services/order';
export default {

  // 全局唯一key
  namespace: 'orderInfo',
  // model的状态数据，通常表现为一个 javascript 对象（当然它可以是任何值）
  state: {userLoading: true,userList:null},

  // 从 源 获取数据的方法
  // Subscription 语义是订阅，用于订阅一个数据源，
  // 然后根据条件 dispatch 需要的 action。
  // 数据源可以是当前的时间、服务器的 websocket 连接、keyboard 输入、geolocation 变化、history 路由变化等等
  subscriptions: {
    setup({history, dispatch}) {
      return history.listen(({pathname,search}) => {
        console.log('search:',pathname);
        if (pathname === '/users') {
          dispatch({type: 'getUserList'});
        }
      });
    }
  },
  // 异步操作
  effects: {
    *getUserList({payload}, {put, call}) {
      yield  put({
        type: 'loadReducer',
        payload: {userLoading: true}
      });
      let res = yield call(qryAllusers, payload);
      if (res) {
        yield put({
          type: 'userListReducer',
          payload: {
            data:res.data,
            userLoading: false,
            userList: res.data,
          }
        });
        console.log("获取数据=",res)

      } else {
        yield put({
          type: 'userListReducer',
          payload: {
            userLoading: false,
            userList: [],
          }
        });
      }
    },
    * fetch({payload}, {call, put}) {  // eslint-disable-line
      yield put({type: 'loadReducer'});
    },
  },

  // 在 dva 中，reducers 聚合积累的结果是当前 model 的 state 对象
  // Reducer应该是个纯函数，即只要传入相同的参数，每次都应返回相同的结果。
  // 不要把和处理数据无关的代码放在Reducer里，让Reducer保持纯净，只是单纯地执行计算
  // Reducer接收两个参数：旧的state和Action，返回一个新的state
  reducers: {
    loadReducer(state, {payload}) {
      return {...state, ...payload}
    },
    userListReducer(state, action) {
      const { userList, userLoading} = action.payload;
      return { ...state,
        reportList: userList,
        reportLoading: userLoading
      }
    }
  },

};
